package basicservicelogic

import (
	"context"
	"github.com/zeromicro/go-zero/core/logx"
	"property_service/dao/model"
	"property_service/dao/query"
	"property_service/internal/svc"
	"property_service/property_service"
	"property_service/utils/result"
)

type StatusDispositionAddLogic struct {
	ctx    context.Context
	svcCtx *svc.ServiceContext
	logx.Logger
}

func NewStatusDispositionAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *StatusDispositionAddLogic {
	return &StatusDispositionAddLogic{
		ctx:    ctx,
		svcCtx: svcCtx,
		Logger: logx.WithContext(ctx),
	}
}

// StatusDispositionAdd 创建状态表
func (l *StatusDispositionAddLogic) StatusDispositionAdd(in *property_service.StatusDisposition) (*property_service.Response, error) {
	// 获取状态表模型的查询构造器
	m := query.Use(l.svcCtx.Gorm).StatusDisposition
	// 创建一个新的状态表模型对象，不包含ID、UpdatedAt、CreatedAt字段
	mod := &model.StatusDisposition{
		StatusCode:           in.StatusCode,           // 状态代码
		StatusName:           in.StatusName,           // 状态名称
		StatusNum:            in.StatusNum,            // 序号
		StatusGroup:          in.StatusGroup,          // 状态分组
		StatusGroupName:      in.StatusGroupName,      // 状态分组名称
		IfRefuse:             in.IfRefuse,             // 如果拒绝倒退到第几步
		IfAgree:              in.IfAgree,              // 如果同意到第几步
		Description:          in.Description,          // 状态描述
		UserPermissions:      in.UserPermissions,      // 用户权限
		Status:               in.Status,               // 状态
		StatusEndDescription: in.StatusEndDescription, // 最终状态提示值
		TenantID:             in.TenantID,             // 租户ID
		CreatedAtuser:        in.CreatedAtuser,        // 创建用户
	}

	// 使用上下文执行创建操作
	if err := m.WithContext(l.ctx).Create(mod); err != nil {
		// 如果创建失败，返回错误响应
		return result.Err(err).Ed()
	}
	// 创建成功，返回成功响应
	return result.Suc().AddEd()
}
